package cn.zzz.openplatform.amap.model.district;

import cn.zzz.openplatform.amap.model.AmapOpenApiResponse;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.List;

/**
 * 行政区域查询响应结果
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class AmapDistrictResponse extends AmapOpenApiResponse {
    /**
     * 建议结果列表
     */
    private Suggestion suggestion;

    /**
     * 行政区列表
     */
    private List<District> districts;

    @Data
    public static class Suggestion {
        /**
         * 建议关键字列表
         */
        private List<String> keywords;

        /**
         * 建议城市列表
         */
        private List<String> cities;
    }

    @Data
    public static class District {
        /**
         * 城市编码
         */
        private String citycode;

        /**
         * 区域编码
         */
        private String adcode;

        /**
         * 行政区名称
         */
        private String name;

        /**
         * 行政区边界坐标点
         * 当一个行政区范围，由完全分隔两块或者多块的地块组成，每块地的 polyline 坐标串以 | 分隔。
         * 如北京 的 朝阳区
         */
        private String polyline;

        /**
         * 区域中心点
         * 乡镇级别返回的center是边界线上的形点，其他行政级别返回的center不一定是中心点，
         * 若政府机构位于面内，则返回政府坐标，政府不在面内，则返回繁华点坐标。
         */
        private String center;

        /**
         * 行政区划级别
         * 可选值：country(国家)、province(省份)、city(市)、district(区县)、street(街道)
         */
        private String level;

        /**
         * 下级行政区列表
         */
        private List<District> districts;
    }
}
